package com.tbit.uqbike.client.service.impl;

import com.tbit.uqbike.client.constant.NewEventConstant;
import com.tbit.uqbike.client.dao.core.InvitationJoinDao;
import com.tbit.uqbike.client.pojo.InvitationJoin;
import com.tbit.uqbike.client.service.InvitationJoinService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Author: chen
 * @Description: 新用户活动参与
 * @Date: 创建于 15:24 2021/1/14
 */
@Service
public class InvitationJoinServiceImpl implements InvitationJoinService {
    @Autowired
    private InvitationJoinDao invitationJoinDao;

    @Override
    public List<InvitationJoin> getByInviteId(Integer inviteId, Integer userId) {
        Map<String, Object> map = new HashMap<>();
        map.put("inviteId", inviteId);
        map.put("userId", userId);
        return invitationJoinDao.getByInviteId(map);
    }

    @Override
    public List<InvitationJoin> getByUserId(Integer userId) {
        List<InvitationJoin> invitationJoins = invitationJoinDao.getByUserId(userId);
        if (invitationJoins.size() > 0) {
            for (InvitationJoin in : invitationJoins) {
                if (in.getState().equals(NewEventConstant.INVITATIONJOIN_STATE_DEFAULT) && System.currentTimeMillis() >= in.getEndTime().getTime()) {
                    in.setState(NewEventConstant.INVITATIONJOIN_STATE_EXPIRE);
                    invitationJoinDao.edit(in);
                }
            }
        }
        invitationJoins = invitationJoinDao.getByUserId(userId);
        return invitationJoins;
    }

    @Override
    public InvitationJoin getByUserIdAndType(Integer userId, Integer type) {
        getByUserId(userId);
        Map<String, Object> map = new HashMap<>();
        map.put("type", type);
        map.put("userId", userId);
        map.put("state", NewEventConstant.INVITATIONJOIN_STATE_DEFAULT);
        return invitationJoinDao.getByUserIdAndType(map);
    }

    @Override
    public void add(InvitationJoin invitationJoin) {
        invitationJoinDao.add(invitationJoin);
    }

    @Override
    public Integer getUserCount(Integer userId, Integer eventId) {
        Map<String, Object> map = new HashMap<>();
        map.put("eventId", eventId);
        map.put("inviteUserId", userId);
        return invitationJoinDao.getUserCount(map);
    }

    @Override
    public List<InvitationJoin> getByEventId(Integer inviteUserId, Integer eventId) {
        Map<String, Object> map = new HashMap<>();
        map.put("eventId", eventId);
        map.put("inviteUserId", inviteUserId);
        return invitationJoinDao.getByEventId(map);
    }

    @Override
    public void edit(InvitationJoin invitationJoin) {
        invitationJoinDao.edit(invitationJoin);
    }


}
